<?php

//------------------------------------------------------------------------------
// Class              : ModelBase
// Modification       :
//------------------------------------------------------------------------------
// Date(yyyy.mm.dd)   Developer                       Action
//------------------------------------------------------------------------------
// 2007.03.05         Oanhhtk                      Created
//------------------------------------------------------------------------------
// 2007.03.08         Tran Thanh                      Update
//------------------------------------------------------------------------------
// 2007.06.01         Oanhhtk                      Update
//------------------------------------------------------------------------------
// 2007.06.14         Oanhhtk                      Update
//------------------------------------------------------------------------------
// 2013.08.13         NguyenNgocManh                  Update
//------------------------------------------------------------------------------


class ModelBase {

    var $db;
    var $tableName = "tableName";
    var $keyField = "id";

//==========================================================================
// Function    : ModelBase
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.03
// Details     : AppendData record of table
//==========================================================================
    function ModelBase(&$database) {
        $this->db = new MySql();
        $this->db = $database;
    }

//==========================================================================
// Function    : getAll
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.05.02
// Details     : AppendData record of table
//==========================================================================
    function getAll($listField = "*", $condition = "") {
        $sql = "SELECT $listField FROM  " . $this->tableName . "  $condition";
//global $db;
//        echo $sql;
        return $this->db->retrieve($sql);
    }

//==========================================================================
// Function    : getByWhere
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
    function getByWhere($listField, $where = "", $order = "") {
        if ($where == "") {
            $sql = "SELECT $listField  FROM $this->tableName  ";
        } else {
            $sql = "SELECT $listField  FROM $this->tableName  WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
//global $db;
//        echo $sql;
        return $this->db->retrieve($sql);
    }

//==========================================================================
// Function    : getByWhere1
// Argument    :
// ReturnValue :
// Creator     : NguyenNgocManh   2013.08.13
// Details     : AppendData record of table
//==========================================================================
    function getByWhere1($listField, $where = "", $order = "") {
        if ($where == "") {
            $sql = "SELECT $listField  FROM $this->tableNameNhanSu  ";
        } else {
            $sql = "SELECT $listField  FROM $this->tableNameNhanSu  WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
//global $db;
//        echo $sql;
        return $this->db->retrieve($sql);
    }

//==========================================================================
// Function    : getByWhere2
// Argument    :
// ReturnValue :
// Creator     : NguyenNgocManh   2013.08.13
// Details     : AppendData record of table
//==========================================================================
    function getByWhere2($listField, $where = "", $order = "") {
        if ($where == "") {
            $sql = "SELECT $listField  FROM $this->tableNameNhanSu  ";
        } else {
            $sql = "SELECT $listField  FROM $this->tableNameNhanSu  WHERE $where ";
        }
        if ($order != "") {
            $sql .= "$order";
        }
//global $db;
//        die($sql);
        return $this->db->retrieve($sql);
    }

//==========================================================================
// Function    : getByWhere3
// Argument    :
// ReturnValue :
// Creator     : NguyenNgocManh   2013.08.13
// Details     : AppendData record of table
//==========================================================================
    function getByWhere3($listField, $where = "", $order = "") {
        if ($where == "") {
            $sql = "SELECT $listField  FROM $this->tableNameServerMail  ";
        } else {
            $sql = "SELECT $listField  FROM $this->tableNameServerMail  WHERE $where ";
        }
        if ($order != "") {
            $sql .= "$order";
        }
//global $db;
//        die($sql);
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : getByIdHome
    // Argument    :
    // ReturnValue :
    // Creator     :Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function getByIdHome($id, $listField = "*") {
        $sql = "SELECT $listField FROM $this->tableName WHERE $this->keyField =$id and shows=1 ";
        return $this->db->getFirstRecord($sql);
    }

    //==========================================================================
    // Function    : getByWhereSISTINTC
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function getByWhereDistinct($listField, $where = "", $order = "") {
        if ($where == "") {
            $sql = "SELECT DISTINCT $listField FROM $this->tableName ";
        } else {
            $sql = "SELECT DISTINCT $listField FROM $this->tableName WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
        //global $db;
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : getByWhereGroup
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function getByWhereGroup($listField, $where = "", $group = "") {
        if ($where == "") {
            $sql = "SELECT $listField FROM $this->tableName ";
        } else {
            $sql = "SELECT $listField FROM $this->tableName WHERE $where ";
        }
        if ($group != "") {
            $sql .= " Group by $group";
        }
        //global $db;
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : getById
    // Argument    :
    // ReturnValue :
    // Creator     :Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function getById($id, $listField = "*", $condition = "") {
        $sql = "SELECT $listField FROM $this->tableName WHERE $this->keyField =$id $condition";
//die($sql);
        return $this->db->getFirstRecord($sql);
    }

    //==========================================================================
    // Function    : getById2
    // Argument    :
    // ReturnValue :
    // Creator     :Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function getById2($id, $listField = "*") {
        $sql = "SELECT $listField FROM $this->tableName WHERE $this->keyField =$id";
//	die($sql);
        return $this->db->getFirstRecord($sql);
    }

    //==========================================================================
    // Function    : getById3
    // Argument    :
    // ReturnValue :
    // Creator     :NguyenNgocManh   2013.08.12
    // Details     : AppendData record of table
    //==========================================================================
    function getById3($id, $listField = "*") {
        $sql = "SELECT $listField FROM $this->tableNameNhanSu WHERE $this->keyField =$id";
//        die($sql);
        return $this->db->getFirstRecord($sql);
    }

    //==========================================================================
    // Function    : getById4
    // Argument    :
    // ReturnValue :
    // Creator     :NguyenNgocManh   2013.08.12
    // Details     : AppendData record of table
    //==========================================================================
    function getById4($id, $listField = "*") {
        $sql = "SELECT $listField FROM $this->tableNameServerMail WHERE $this->keyField =$id";
//        die($sql);
        return $this->db->getFirstRecord($sql);
    }

    //==========================================================================
    // Function    : getById2
    // Argument    :
    // ReturnValue :
    // Creator     :Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function getById2_lhchothuenha($id, $listField = "*") {
        $sql = "SELECT $listField FROM $this->tableName_lh WHERE $this->keyField =$id";
        return $this->db->getFirstRecord($sql);
    }

    //==========================================================================
    // Function    : getById_lhchothuenha
    // Argument    :
    // ReturnValue :
    // Creator     : Oanhhtk 2009.07.16
    // Details     : AppendData record of table
    //==========================================================================
    function getById_lhchothuenha($id, $listField = "*") {
        $sql = "SELECT $listField FROM $this->tableName_lh WHERE $this->keyField =$id";
        return $this->db->getFirstRecord($sql);
    }

    //==========================================================================
    // Function    : getBy
    // Argument    :
    // ReturnValue :
    // Creator     :Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function getBySql($sql) {
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : exist
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function exist($id) {
        echo "exist not define.";
        //$sql = "DELETE * FROM WHERE ".$this->$keyField ."=". $id ;
        //return $this->db->query($sql);
    }

    //==========================================================================
    // Function    : deleteAll
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function deleteAll() {

        $sql = "DELETE FROM $this->tableName ";
        //global $db;
        return $this->db->query($sql);
    }

    //==========================================================================
    // Function    : deleteWhere
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function deleteWhere($where = "") {
        $sql = "DELETE FROM $this->tableName WHERE $where ";

        //global $db;
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : deleteById
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function deleteById($id) {
        $sql = "DELETE FROM $this->tableName WHERE $this->keyField=$id ";
        return $this->db->query($sql);
    }

    //==========================================================================
    // Function    : deleteById1
    // Argument    :
    // ReturnValue :
    // Creator     : NguyenNgocManh   2013.08.13
    // Details     : AppendData record of table
    //==========================================================================
    function deleteById1($id) {
        $sql = "DELETE FROM $this->tableNameNhanSu WHERE $this->keyField=$id ";
//        die($sql);
        return $this->db->query($sql);
    }

    //==========================================================================
    // Function    : deleteById2
    // Argument    :
    // ReturnValue :
    // Creator     : NguyenNgocManh   2013.08.13
    // Details     : AppendData record of table
    //==========================================================================
    function deleteById2($id) {
        $sql = "DELETE FROM $this->tableNameHoSo WHERE $this->keyField=$id ";
//        die($sql);
        return $this->db->query($sql);
    }

    //==========================================================================
    // Function    : insert
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function insert(&$arrayData) {
        echo "insert not define.";
    }

    function update($listUpdate, $condition = "1=1") {
        // echo "update not define.";
        $sql = "UPDATE $this->tableName SET $listUpdate WHERE " . $condition;
        //echo $sql;
        return $this->db->query($sql);
    }

    //==========================================================================
    // Function    : errno
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function errno() {
        return $this->db->errno();
    }

    //==========================================================================
    // Function    : error
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.06.02
    // Details     : AppendData record of table
    //==========================================================================
    function error() {
        return $this->db->error();
    }

    //==========================================================================
    // Function    : getByWhereLimit40
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function getByWhereLimit40($listField, $where = "", $order = "") {
        if ($where == "") {
            $sql = "SELECT $listField FROM $this->tableName ";
        } else {
            $sql = "SELECT $listField FROM $this->tableName WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
        if ($order != "") {
            $sql .= " limit 1, 40";
        }
        //global $db;
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : getByWhereLimit5
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function getByWhereLimit5($listField, $where = "", $order = "") {
        if ($where == "") {
            $sql = "SELECT $listField FROM $this->tableName ";
        } else {
            $sql = "SELECT $listField FROM $this->tableName WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
        if ($order != "") {
            $sql .= " limit 1, 5";
        }
        //global $db;
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : getByWhereLimit6_10
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function getByWhereLimit2($listField, $where = "", $order = "") {
        if ($where == "") {
            $sql = "SELECT $listField FROM $this->tableName ";
        } else {
            $sql = "SELECT $listField FROM $this->tableName WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
        if ($order != "") {
            $sql .= " limit 0, 2";
        }
        //global $db;
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : getByWhereLimit40
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function getByWhereLimit($listField, $where = "", $order = "", $limit = "") {
        if ($where == "") {
            $sql = "SELECT $listField FROM $this->tableName ";
        } else {
            $sql = "SELECT $listField FROM $this->tableName WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
        if ($limit != "") {
            $sql .= " limit $limit";
        }
//	echo $sql."<br/>";
//        die($sql);
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : getByWhereLimit40
    // Argument    :
    // ReturnValue :
    // Creator     : NguyenNgocManh 2013.08.13
    // Details     : AppendData record of table
    //==========================================================================
    function getByWhereLimitNhanSu($listField, $where = "", $order = "", $limit = "") {
        if ($where == "") {
            $sql = "SELECT $listField FROM $this->tableNameNhanSu ";
        } else {
            $sql = "SELECT $listField FROM $this->tableNameNhanSu WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
        if ($limit != "") {
            $sql .= " limit $limit";
        }
//        die($sql);
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : getByWhereLimit10
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function getByWhereLimit10($listField, $where = "", $order = "") {

        if ($where == "") {
            $sql = "SELECT $listField FROM $this->tableName ";
        } else {
            $sql = "SELECT $listField FROM $this->tableName WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
        if ($order != "") {
            $sql .= " limit 1, 10";
        }
        //global $db;
        return $this->db->retrieve($sql);
    }

    //==========================================================================
    // Function    : getByWhereLimit10
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function getByWhereLimit9($listField, $where = "", $order = "") {
        if ($where == "") {
            $sql = "SELECT $listField FROM $this->tableName ";
        } else {
            $sql = "SELECT $listField FROM $this->tableName WHERE $where ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
        if ($order != "") {
            $sql .= " limit 1, 9";
        }
        //global $db;
        return $this->db->retrieve($sql);
    }

    function getMaxId() {
        $sql = "SELECT max(id) as maxid FROM $this->tableName ";
        return $this->db->getFirstRecord($sql);
    }

    //==========================================================================
    // Function    :  updateSoLanXem
    // Argument    :
    // ReturnValue :
    // Creator     : Tran Thanh 2007.03.09
    // Details     : AppendData record of table
    //==========================================================================
    function updateSoLanXem($id) {
        $sql = "UPDATE $this->tableName SET so_lan_xem = so_lan_xem + 1 WHERE " . $this->keyField . "=" . $id;
        return $this->db->query($sql);
    }

    function updateHits($id) {
        $sql = "UPDATE $this->tableName SET hits = hits + 1 WHERE " . $this->keyField . "=" . $id;
        return $this->db->query($sql);
    }

    //==========================================================================
    // Function    :  replaceString(str)
    // Description :  Replace ' in the string by '' when insert or update data
    // Argument    :
    // ReturnValue :
    // Creator     : QuynhTTN 2007.09.26
    // Details     :
    //==========================================================================
    function replaceString($strReplace) {
        //Khi chay tren may CLIENT thi bo commenthien thi dong phia duoi nay;
        if (RUN_ON_HOST_INTERNET == "true") {
            $strResult = str_replace("\'", "''", $strReplace);
        } else {
            //Khi upload len SERVER thi bo comment va hient thi dong phia duoi nay.
            $strResult = str_replace("'", "''", $strReplace);
        }
        //die($strResult);
        return $strResult;
    }

    //==========================================================================
    // Function    :  GetDate(str)
    // Description :  dd-mm-yyyy -> yyyy-mm-dd
    // Argument    :
    // ReturnValue :
    // Creator     : QuynhTTN 2010.12.15
    // Details     :
    //==========================================================================
    function GetDate($strDate) {
        //Khi chay tren may CLIENT thi bo commenthien thi dong phia duoi nay;
        $get_char = explode("-", $strDate);
        $strResult = $get_char["2"] . "-" . $get_char["1"] . "-" . $get_char["0"] . " 00:00:00";
        //die($strResult);
        return $strResult;
    }

    //==========================================================================
    // Function    : updateKoukai
    // Creator     : Oanhhtk 2007.06.14
    // Details     : Update koukai
    //==========================================================================
    function updateKoukai(&$arrayData) {
        $arrayId = $arrayData["id"];
        $i = 0;
        $sql = "";
        if (!is_array($arrayId))
            return;

        foreach ($arrayId as $row) {
            $koukai = $arrayData["koukai" . $row];
            $sql = "UPDATE " . $this->tableName . " SET ";
            if ($koukai == 1) {
                $sql .= "koukai=1";
            } else {
                $sql .= "koukai=0";
            }
            $sql .= ( " WHERE $this->keyField=" . $row);
            $this->db->query($sql);
            $i++;
        }
    }

//==========================================================================
// Function    : get_listId_by_where
// Argument    :
// ReturnValue :
// Creator     : ManhNN 2013.09.25
// Details     : AppendData record of table
//==========================================================================
    function get_listId_by_where($user_id) {
        $sql = "SELECT * FROM bfw_role_user_khach_hang WHERE user_id=$user_id";
//        echo $sql."<br/>";
//        die();
        return $this->db->getFirstRecord($sql);
    }

//==========================================================================
// Function    : getByWhere_list_id
// Argument    :
// ReturnValue :
// Creator     : ManhNN 2013.09.25
// Details     : AppendData record of table
//==========================================================================
    function getByWhere_list_id(&$list_id, $id_nhom_kh, $order) {
        $sql = "SELECT *  FROM $this->tableName  ";
        $strWhere = $this->getStrWhere($list_id, $id_nhom_kh);
        if ($strWhere != "") {
            $sql .= " WHERE $strWhere ";
        }
        if ($order != "") {
            $sql .= " Order by $order";
        }
//global $db;
//        echo $sql . "<br/><br/>";
        return $this->db->retrieve($sql);
    }

//==========================================================================
// Function    : getStrWhere
// Creator     : ManhNN 2013.09.25
// Details     : Get all data from table
//==========================================================================
    function getStrWhere($list_id, $id_nhom_kh) {
        $strWhere = ' 1 = 1 ';
        if ($list_id != '') {
            $strWhere .= " AND id IN (" . $list_id . ") ";
        } else if ($id_nhom_kh != '') {
            $strWhere .= " AND id IN (" . $id_nhom_kh . ") ";
        } else {
            $strWhere = ' 1 != 1 ';
        }
        return $strWhere;
    }

//==========================================================================
// Function    : get_list_id_nhom_kh
// Argument    :
// ReturnValue :
// Creator     : ManhNN 2013.09.25
// Details     : AppendData record of table
//==========================================================================
    function get_list_id_nhom_kh($id_nhom_kh) {
        $nhom = '';
        $strWhere = '';
        if ($id_nhom_kh != '') {
            $id_nhom_kh = explode(",", $id_nhom_kh);
            foreach ($id_nhom_kh as $value) {
                if ($nhom == '') {
                    $nhom .= "id_nhom_kh LIKE '%,$value,%'";
                } else {
                    $nhom .= " OR id_nhom_kh LIKE '%,$value,%'";
                }
            }
            $strWhere .= $nhom;
        }
        $sql = "SELECT * FROM " . $this->tableName;
        if ($strWhere != '') {
            $sql .= " WHERE $strWhere ";
        } else {
            $sql .= " WHERE 1!=1 ";
        }
//        echo($sql) . "<br/>";
//        die();
        return $this->db->retrieve($sql);
    }

}

?>